home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / filesyst / ncpfs / ipxripd-.000 / ipxripd- / ipxripd / ipxutil.c < prev    next >
C/C++ Source or Header  |  1996-03-09  |  3KB  |  130 lines

  1. /*
  2.     IPX support library - general functions
  3.  
  4.     Copyright (C) 1994, 1995  Ales Dryak <e-mail: A.Dryak@sh.cvut.cz>
  5.     Copyright (C) 1996, Volker Lendecke <lendecke@namu01.gwdg.de>
  6.  
  7.     This program is free software; you can redistribute it and/or modify
  8.     it under the terms of the GNU General Public License as published by
  9.     the Free Software Foundation; either version 2 of the License, or
  10.     (at your option) any later version.
  11.  
  12.     This program is distributed in the hope that it will be useful,
  13.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.     GNU General Public License for more details.
  16.  
  17.     You should have received a copy of the GNU General Public License
  18.     along with this program; if not, write to the Free Software
  19.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  
  21. */
  22. #include <string.h>
  23. #include <netinet/in.h>
  24. #include "ipxutil.h"
  25.  
  26. void
  27. ipx_fprint_node(FILE *file, IPXNode node)
  28. {
  29.     fprintf(file,"%02X%02X%02X%02X%02X%02X",
  30.         (unsigned char)node[0],
  31.         (unsigned char)node[1],
  32.         (unsigned char)node[2],
  33.         (unsigned char)node[3],
  34.         (unsigned char)node[4],
  35.         (unsigned char)node[5]
  36.         );
  37. }
  38.  
  39. void
  40. ipx_fprint_network(FILE *file, IPXNet net)
  41. {
  42.     fprintf(file,"%08lX",net);
  43. }
  44.  
  45. void
  46. ipx_fprint_port(FILE *file, IPXPort port)
  47. {
  48.     fprintf(file,"%04X",port);
  49. }
  50.  
  51. void
  52. ipx_fprint_saddr(FILE *file, struct sockaddr_ipx *sipx)
  53. {
  54.     ipx_fprint_network(file,ntohl(sipx->sipx_network));
  55.     fprintf(file,":");
  56.     ipx_fprint_node(file,sipx->sipx_node);
  57.     fprintf(file,":");
  58.     ipx_fprint_port(file,ntohs(sipx->sipx_port));
  59. }
  60.  
  61. void
  62. ipx_print_node(IPXNode node)
  63. {
  64.     ipx_fprint_node(stdout,node);
  65. }
  66.  
  67. void
  68. ipx_print_network(IPXNet net)
  69. {
  70.     ipx_fprint_network(stdout,net);
  71. }
  72.  
  73. void
  74. ipx_print_port(IPXPort port)
  75. {
  76.     ipx_fprint_port(stdout,port);
  77. }
  78.  
  79. void
  80. ipx_print_saddr(struct sockaddr_ipx *sipx)
  81. {
  82.     ipx_fprint_saddr(stdout,sipx);
  83. }
  84.  
  85. void
  86. ipx_assign_node(IPXNode dest, IPXNode src)
  87. {
  88.     memcpy(dest,src,sizeof(IPXNode));
  89. }
  90.  
  91. int
  92. ipx_node_equal(IPXNode n1, IPXNode n2)
  93. {
  94.     return memcmp(n1,n2,sizeof(IPXNode))==0;
  95. }
  96.  
  97. int
  98. ipx_sscanf_node(char *buf, IPXNode node)
  99. {
  100.     int i;
  101.     int n[6];
  102.  
  103.     if ((i = sscanf(buf, "%2x%2x%2x%2x%2x%2x",
  104.             &(n[0]), &(n[1]), &(n[2]),
  105.             &(n[3]), &(n[4]), &(n[5]))) != 6)
  106.     {
  107.         return -1;
  108.     }
  109.  
  110.     for (i=0; i<6; i++)
  111.     {
  112.         node[i] = n[i];
  113.     }
  114.     return 0;
  115. }
  116.  
  117. int
  118. ipx_sscanf_net(char *buf, IPXNet *target)
  119. {
  120.     if (sscanf(buf, "%8lX", target) == 1)
  121.     {
  122.         return 0;
  123.     }
  124.     return -1;
  125. }
  126.  
  127. IPXNode ipx_this_node={0,0,0,0,0,0};
  128. IPXNode ipx_broadcast_node={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
  129. char ipx_err_string[IPX_MAX_ERROR+1]="no error detected";
  130.